class Creature:
    def live(self):
        print("This creature is living.")

class Animal:
    def run(self):
        print("Animal is running...")

class Cat(Animal, Creature):
    # 请取消run()方法的注释观察运行结果
    def run(self):
        print("The cat is running...")
    pass

class Dog(Animal):
    # 请取消run()方法的注释观察运行结果
    # def run(self):
    #     print("The cat is running...")
    pass

#【子类对父类方法的调用或重写该方法】
# 请取消Cat类、Dog类中run()方法的注释观察运行结果的变化
INS_cat = Cat()
INS_cat.run()

INS_dog = Dog()
INS_dog.run()

#【数据类型的检查】
# 由于Python中，所有的数据类型都是对象，所以定义一个类实际上是定义了一个数据类型
# 可以用isinstance()来检查类型
print(isinstance(INS_cat, Cat))
print(isinstance(INS_cat, Animal))  # 子类同时属于父类的类型
print(isinstance(INS_dog, Dog))
print(isinstance(INS_dog, Animal))  # 子类同时属于父类的类型
